package com.night.icm.service.base.service;

import com.night.icm.common.utils.PageDataDTO;
import com.night.icm.common.utils.SimpleDataDTO;
import com.night.icm.model.base.AcademyDTO;

import java.util.List;

/**
 * AcademyService
 *
 * @author Liao ZhiYong
 * @date 2020/1/5
 */
public interface AcademyService {

    /**
     * 新建学院
     *
     * @param academyDTO 学院信息
     * @return 新增的学院信息
     */
    AcademyDTO create(AcademyDTO academyDTO);

    /**
     * 分页查找学院信息
     *
     * @param page 页号，从0开始
     * @param size 每页纪录条数
     * @param sort 排序字段, 例如：字段1,asc,字段2,desc
     * @param name 学院名称
     * @param code 学院编号
     * @return 学院信息
     */
    PageDataDTO<AcademyDTO> findOnePage(int page, int size, String sort, String name, String code);

    /**
     * 根据id删除学院信息
     *
     * @param id 学院id
     */
    void deleteById(String id);

    /**
     * 更新学院信息
     *
     * @param id         学院id
     * @param academyDTO 学院信息
     * @return 更新后学院信息
     */
    AcademyDTO update(String id, AcademyDTO academyDTO);

    /**
     * 通过id查找学院
     *
     * @param id 学院id
     * @param isGetProfession 是否获取专业
     * @return 学院信息
     */
    AcademyDTO findById(String id, Boolean isGetProfession);

    /**
     * 查找所有学院信息
     *
     * @return 学院信息
     */
    List<AcademyDTO> findAll();

    /**
     * 查找所有学院信息，并排序
     *
     * @param param   排序参数
     * @param pattern 排序模式
     * @return 学院信息: asc/desc
     */
    List<AcademyDTO> findAllBySort(String param, String pattern);

    /**
     * 检查学院编码是否存在
     *
     * @param code 学院编码
     * @return 是或否
     */
    SimpleDataDTO<Boolean> checkoutCodeIsExist(String code);

    /**
     * 统计学院数量
     *
     * @return 学院数量
     */
    Long countAcademy();
}
